import { modifyData } from "./utils";

class StoreInterface<StoreType> {
  /** 初始化, 需传入vue的reactive函数 和 扩展的配置 */
  constructor(reactive: Function, dataInfo: StoreType) {
    this.info = reactive(dataInfo);
  }

  /** 配置对象信息 */
  readonly info: StoreType;

  /** 更新info */
  updateInfo(info: Partial<StoreType>) {
    modifyData(this.info, info);
  }

  /** 重置info */
  resetInfo(info: Partial<StoreType>) {
    this.updateInfo(info);
  }
}

export default StoreInterface;
